home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************
- * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne. JOVE *
- * is provided to you without charge, and with no warranty. You may give *
- * away copies of JOVE, including sources, provided that this notice is *
- * included in all the files. *
- ***************************************************************************/
-
- /* jove.h header file to be included by EVERYONE */
-
- #include <setjmp.h>
- #ifndef TUNED
- # include "tune.h"
- #endif
-
- #ifndef MAC
- # include <types.h>
- # include <string.h>
- #else
- # include <types.h>
- #endif
-
- /* proto: macro to allow us to prototype any function declaration
- * without upsetting old compilers.
- */
-
- #ifdef REALSTDC
- # define USE_PROTOTYPES 1
- #endif
-
- #ifdef USE_PROTOTYPES
- # define proto(x) x
- # ifdef NO_PTRPROTO
- /* on these systems, a prototype cannot be used for a pointer to function */
- # define ptrproto(x) ()
- # else
- # define ptrproto(x) x
- # endif
- #else
- # define proto(x) ()
- # define ptrproto(x) ()
- #endif
-
- /* There are two ways to handle functions with a variable number of args.
- * The old portable way uses varargs.h. The way sanctioned by ANSI X3J11
- * uses stdarg.h.
- */
- #ifdef REALSTDC
- #define STDARGS 1
- # define va_init(ap, parmN) { va_start((ap), (parmN)); }
- #else
- # define va_init(ap, parmN) { va_start((ap)); }
- #endif
-
- /* ANSI Goodies and their substitutes
- *
- * const: readonly type qualifier
- *
- * volatile: type qualifier indicating one of two kinds of magic.
- * 1. This object may be modified by an event unknown to the implementation
- * (eg. asynchronous signal or memory-mapped I/O device).
- * 2. This automatic variable might be modified between a setjmp()
- * and a longjmp(), and we wish it to have the correct value after
- * the longjmp(). This second meaning is an X3J11 abomination.
- * So far, only the second meaning is used.
- *
- * UnivPtr: universal pointer type
- *
- * UnivConstPtr: universal pointer to const
- */
-
- #ifdef REALSTDC
-
- typedef void *UnivPtr;
- typedef const void *UnivConstPtr;
-
- #else /* !REALSTDC */
-
- # ifndef const
- # define const /* Only in ANSI C. Pity */
- # endif
- # ifndef volatile
- # define volatile
- # endif
- typedef char *UnivPtr;
- typedef const char *UnivConstPtr;
-
- #endif /* !REALSTDC */
-
- /* According to the ANSI standard for C, any library routine may
- * be defined as a macro with parameters. In order to prevent
- * the expansion of this macro in a declaration of the routine,
- * ANSI suggests parenthesizing the identifier. This is a reasonable
- * and legal approach, even for K&R C.
- *
- * A bug in the MIPS compiler used on MIPS, IRIS, and probably other
- * MIPS R[23]000 based systems, causes the compiler to reject
- * these declarations (at least at the current time, 1989 August).
- * To avoid this bug, we conditionally define and use UNMACRO.
- */
- #ifdef mips
- # define UNMACRO(proc) proc
- #else
- # define UNMACRO(proc) (proc)
- #endif
-
- /* Since we don't use stdio.h, we may have to define NULL and EOF */
-
- #ifndef NULL
- # define NULL 0
- #endif
-
- #ifndef EOF
- #define EOF (-1)
- #endif
-
- #define private static
-
- typedef int bool;
- #define NO 0
- #define YES 1
- #define FALSE 0
- #define TRUE 1
- #define OFF 0
- #define ON 1
-
- /* typedef structure definitions */
- #ifdef IPROCS
- typedef struct process Process;
- #endif
- typedef struct window Window;
- typedef struct position Bufpos;
- typedef struct mark Mark;
- typedef struct buffer Buffer;
- typedef struct line Line;
- typedef struct iobuf IOBUF;
-
- #include "buf.h"
- #include "wind.h"
- #include "io.h"
- #include "dataobj.h"
- #include "keymaps.h"
- #include "argcount.h"
- #include "util.h"
- #include "vars.h"
- #include "screen.h"
-
- /* return codes for command completion (all < 0 because >= 0 are
- legitimate offsets into array of strings */
-
- #define AMBIGUOUS (-2) /* matches more than one at this point */
- #define UNIQUE (-3) /* matches only one string */
- #define ORIGINAL (-4) /* matches no strings at all! */
- #define NULLSTRING (-5) /* just hit return without typing anything */
-
- /* values for the `flags' argument to complete */
- #define NOTHING 0 /* opposite of RET_STATE */
- #define RET_STATE 1 /* return state when we hit return */
- #define RCOMMAND 2 /* we are reading a joverc file */
- #define CASEIND 4 /* map all to lower case */
-
- #define FORWARD 1
- #define BACKWARD (-1)
-
- #define ARG_CMD 1
- #define LINECMD 2
- #define KILLCMD 3 /* so we can merge kills */
- #define YANKCMD 4 /* so we can do ESC Y (yank-pop) */
-
- extern jmp_buf mainjmp;
-
- /* setjmp/longjmp args for DoKeys() mainjmp */
- #define FIRSTCALL 0
- #define ERROR 1
- #define COMPLAIN 2 /* do the error without a getDOT */
- #define QUIT 3 /* leave this level of recursion */
-
- #define INT_OKAY 0
- #define INT_BAD (-1)
-
- extern char NullStr[];
- extern char *ProcFmt;
-
- extern int
- LastKeyStruck,
-
- RecDepth, /* recursion depth */
- InJoverc; /* depth in sourcing */
-
- extern bool
- InMacDefine, /* are we defining a macro right now? */
-
- TOabort, /* flag set by Typeout() */
-
- errormsg, /* last message was an error message
- so don't erase the error before it
- has been read */
- InputPending, /* nonzero if there is input waiting to
- be processed */
- Interactive,
- inIOread, /* so we know whether we can do a redisplay. */
-
- Asking, /* are we on read a string from the terminal? */
- InRealAsk; /* are we currently executing real_ask()? */
-
- extern int
- AskingWidth; /* width of question being asked */
-
- extern char
- *Inputp,
- Minibuf[LBSIZE],
- ShcomBuf[LBSIZE],
- *version;
-
- #define MESG_SIZE 128
- extern char mesgbuf[MESG_SIZE];
-
- #include "externs.h"
-
- #ifndef W_OK
- # define W_OK 2
- # define X_OK 1
- # define F_OK 0
- #endif
-